package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.entity.Unit;

import java.util.List;

/**
 * @description 商品类别
 */
public interface GoodsTypeDao {

    /**
     * 修改商品状态
     */
    Integer updateGoodsTypeState(GoodsType parentGoodsType);

    /**
     * 查询所有的商品分类里
     * @return
     */
    String getGoodsType();

    /**
     * 查询所有商品单位
     * @return
     */
    List<Unit> getGoodsUnitList();

    /**
     * 查询所有商品信息,可根据分类、名称查询
     * @param page
     * @param rows
     * @param goodsName
     * @param goodsTypeId
     * @return
     */
    List<Goods> getGoodsList(Integer page, Integer rows, String goodsName, Integer goodsTypeId);

    /**
     *  新增分类
     * @param goodsTypeName
     * @param pId
     */
    void saveGoodsType(String goodsTypeName, Integer pId);

    /**
     * 删除分类
     * @param goodsTypeId
     */
    void deleteGoodsType(Integer goodsTypeId);

    /**
     * 根据Id 获取商品信息
     * @param goodsId
     * @return
     */
    Goods getGoodsById(Integer goodsId);

    /**
     * 修改商品信息
     * @param goods
     */
    void updateGoodsById(Goods goods);

    /**
     * 添加商品信息
     * @param goods
     */
    void addGoods(Goods goods);

    /**
     * 根据id删除商品信息
     * @param goodsId
     */
    void deleteGoods(Integer goodsId);

    /**
     * 没有库存商品列表展示
     * @param page
     * @param rows
     * @param name
     * @param code
     * @return
     */
    List<Goods> getNoInventoryQuantity(Integer page, Integer rows, String name, String code);

    /**
     * 获取商品列表
     * @return
     */
    List<Goods> getAllGoodsList();

    /**
     * 查询商品分类
     * @param goodsTypeId
     * @return
     */
    GoodsType getGoodsTypeById(Integer goodsTypeId);

    /**
     * 获取无库存的商品总数量
     * @return
     */
    Integer getNoInventoryQuantityCount();

    /**
     * 有库存商品列表展示
     * @param page
     * @param rows
     * @param name
     * @param code
     * @return
     */
    List<Goods> getHasInventoryQuantity(Integer page, Integer rows, String name, String code);

    /**
     * 获取有库存的商品总数量
     * @return
     */
    Integer getHasInventoryQuantityCount();


}
